//
// Author: Vladimir Migashko <migashko@gmail.com>, (C) 2011
//
// Copyright: See COPYING file that comes with this distribution
//

#ifndef HITLIST_SERVICE_HPP
#define HITLIST_SERVICE_HPP

#include "ihitlist.hpp"
#include <fas/mux/imux.hpp>
#include <string>

namespace am = ::fas::mux;

class service_tcp;
class service_udp;

/** @brief json-rpc сервис для tcp и udp */
class service
{

public:

  virtual ~service();

  service();
  /** @brief начальная инициализация сервиса (вызывать строго до *_start)
   *  @param mux указатель на объект мультиплексирования 
   *  @param hl hitlist
    */
  void initialize(am::imux<>* mux, ihitlist* hl);

  /** @brief запустить tcp сервис
   *  @param addr может быть равет ""
   *  @param port порт он и в африке порт 
   */
  void tcp_start(const std::string& addr, unsigned short port);

  /** @brief запустить udp сервис
   *  @param addr может быть равет ""
   *  @param port порт он и в африке порт 
   */
  void udp_start(const std::string& addr, unsigned short port);

private:
  am::imux<>* _mux;
  service_tcp* _tcp;
  service_udp* _udp;
  //ihitlist* _hitlist;
};

#endif

